﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing.Drawing2D;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;


public partial class Admin_panel_Lostpass : System.Web.UI.Page
{
    BieumauDataContext db = new BieumauDataContext();
    protected void Page_Load(object sender, EventArgs e)
    {
         if (!IsPostBack)
            {
                String catchpa = Random_string();
                taohinhanh(catchpa);
                //trình điều khiển comparevalidator
                CompareValidator1.ValueToCompare = catchpa;
                this.Image1.ImageUrl = "..//userfiles//image//catchpa.gif";
            }
    }
    /// <summary>
    /// ham random chuoi Catchpa
    /// </summary>
    /// <returns></returns>
    public string Random_string()
    {
        Random ran = new Random();
        char[] ch = "qwertyuiopasdfghjklzxcvbnm1234567890".ToCharArray();
        string random_string = "";
        for (int i = 0; i < 6; i++)
        {
            random_string += ch[ran.Next(0, 35)];

        }
        return random_string;
    }
    /// <summary>
    /// Ham ve doi tuong do hoa
    /// </summary>
    /// <param name="chuoihienthi"></param>

    public void taohinhanh(string chuoihienthi)
    {
        Bitmap imagesource = new Bitmap(100, 100);
        //khai bao kích thước đối tượng
        int iwidth = 0;
        int iheight = 0;
        //khai báo kiểu chữ xuất hiện
        Font myfont = new Font("Verdana", 24, System.Drawing.GraphicsUnit.Point);
        //khai bao đối tượng graphics
        Graphics mygravity = Graphics.FromImage(imagesource);
        //khai báo kích thước đối tượng
        iwidth = (int)mygravity.MeasureString(chuoihienthi, myfont).Width;
        iheight = (int)mygravity.MeasureString(chuoihienthi, myfont).Height;

        //khởi tạo đối tượng bitmap
        imagesource = new Bitmap(imagesource, new Size(iwidth, iheight));
        //thêm màu
        mygravity = Graphics.FromImage(imagesource);
        Rectangle rect = new Rectangle(0, 0, iwidth, iheight);
        int m = Math.Max(rect.Width, rect.Height);
        HatchBrush hatch = new HatchBrush(HatchStyle.SmallConfetti, Color.LightBlue, Color.White);
        //to mau vao doi tuong bitmap
        Random ran = new Random();
        mygravity.FillRectangle(hatch, rect);
        for (int i = 0; i < (int)(rect.Width * rect.Height / 30F); i++)
        {
            int x = ran.Next(rect.Width);
            int y = ran.Next(rect.Height);
            int w = ran.Next(m / 50);
            int h = ran.Next(m / 50);
            mygravity.FillEllipse(hatch, x, y, w, h);


        }
        mygravity.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
        mygravity.DrawString(chuoihienthi, myfont, new SolidBrush(Color.Gray), 0, 0);
        //khia bao dương dẫn lưu bitmap
        String imagepath = Server.MapPath(".") + "//userfiles//image//catchpa.gif";
        imagesource.Save(imagepath, System.Drawing.Imaging.ImageFormat.Gif);
        mygravity.Flush();
        mygravity.Dispose();


    }
    /// <summary>
    /// xoa thong tin trong textbox
    /// </summary>
    public void xoathongtin()
    {
        txtemail.Text = "";
        txtemail.Focus();
        txtcatchpa.Text = "";
    }
    /// <summary>
    /// Hàm này trả về chuỗi Password ngẫu nhiên [a-z], [0-9]
    /// </summary>
    /// <param name="PasswordLength">độ dài mật khẩu</param>
    /// <returns>mật khẩu</returns>
    public static string Gen_pass(int PasswordLength)
    {
        string _allowedChars = "abcdefghijkmnopqrstuvwxyz0123456789";
        Random randNum = new Random();
        char[] chars = new char[PasswordLength];
        int allowedCharCount = _allowedChars.Length;
        for (int i = 0; i < PasswordLength; i++)
        {
            chars[i] = _allowedChars[(int)((_allowedChars.Length) * randNum.NextDouble())];
        }
        return new string(chars);
    }
    /// <summary>
    /// hàm cấp lại mật khẩu
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btblost_pass_Click(object sender, EventArgs e)
    {
        
        if (Page.IsValid)
        {
            var sys=(from s in db.Mail_systems select s).Single();
            string email_get=txtemail.Text;
            string _new_pass_random = Gen_pass(8);
            int check_NN = (from p in db.tblCoQuanNhaNuocs where p.email == email_get select p).Count();
            if (check_NN != 0)
            {
                tblCoQuanNhaNuoc nn = db.tblCoQuanNhaNuocs.Single(p => p.email == email_get);
                nn.MatKhau = _new_pass_random.MD5_pass_kieu1();
                db.SubmitChanges();
            }
            int check_DN = (from p in db.tblDoanhNghiepTuNhans where p.Email == email_get select p).Count();
            if (check_DN != 0)
            {
                tblDoanhNghiepTuNhan dn = db.tblDoanhNghiepTuNhans.Single(p => p.Email == email_get);
                dn.MatKhau = _new_pass_random.MD5_pass_kieu1();
                db.SubmitChanges();
            }
            
            if (check_DN != 0 || check_NN != 0)
            {
                string _chude = "Trung tâm tin học và thông tin KH-CN tỉnh Bình Dương: Cấp lại mật khẩu";
                string _noidung = "Thân chào quý đơn vị,<br/>"+
                    "Quý đơn vị vừa yêu cầu cấp lại mật khẩu cho tài khoản trên website, dưới đây là thông tin về mật khẩu mới:<br/><i>Mật khẩu mới là:</i><b>" + _new_pass_random + "</b><br/>" +
                "<p>Hãy sử dụng <b>Tài khoản hiện tại</b> và <b>Mật khẩu mới</b> để đăng nhập.Sau khi đăng nhập thành công có thể đổi lại mật khẩu để đảm bảo an toàn thông tin.</p><br/><br/>Trân trọng,<br/>Quản trị website";
                String catchpa = Random_string();
                taohinhanh(catchpa);
                Send_mail.Send(sys.Mail.Trim(), email_get.Trim(), _chude, _noidung, sys.Pass, "Mail_reset_system");
                lblstatus.ForeColor = System.Drawing.Color.Green;  
                lblstatus.Text = "Đã gửi mail thành công ! (* Email có thể được gửi đến trong thư mục Spam,Xin vui lòng kiểm tra*)";
                Response.AddHeader("REFRESH", "4;URL=Trangchu.aspx");
            }
            else
            {
                lblstatus.ForeColor=System.Drawing.Color.Red;
                lblstatus.Text = "Địa chỉ: " + email_get + " không tồn tại trên hệ thống";
            }
        }
    }
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {

    }
  
}